package com.itaming.lycheeframework.jackson.sensitive;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.*;

/**
 * 敏感数据字段注解
 *
 * @author A.Ming
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@JacksonAnnotationsInside
@JsonSerialize(using = DesensitizedSerializer.class)
public @interface Sensitive {

    /**
     * 脱敏类型
     */
    SensitiveType type();

    /**
     * 掩码字符
     */
    char mask() default '*';

    /**
     * 开始位置(包含)，仅在自定义类型 {@link SensitiveType#CUSTOM } 时有效
     */
    int startIndex() default 0;

    /**
     * 结束位置(不包含)，仅在自定义类型 {@link SensitiveType#CUSTOM } 时有效
     */
    int endIndex() default 0;

}
